/*package cn.xiaoliu.basic.service.impl;

import cn.xiaoliu.basic.exception.BusinessException;
import cn.xiaoliu.basic.service.IVerifyCodeService;
import cn.xiaoliu.basic.utils.SmsUtils;
import cn.xiaoliu.basic.utils.StrUtils;
import cn.xiaoliu.user.domain.User;
import cn.xiaoliu.user.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.concurrent.TimeUnit;

@Service
public class VerifyCodeServiceImpl02 implements IVerifyCodeService {
    @Autowired
    private RedisTemplate redisTemplate;
    @Autowired
    private UserMapper userMapper;
    @Override
    public void sendSmsCode(String phone) {
        //一.基本校验
        //1.手机号不能为空，并且手机号没有被注册过
        if (StringUtils.isEmpty(phone)){
            throw new BusinessException("手机号不能为空");
        }
        User user = userMapper.loadByPhone(phone);
        if (user!=null){
            throw new BusinessException("此号码已经注册过，请直接登录");
        }
        //二.校验验证码是否有效
        String key = "register:"+phone;
        Object yzmCode = redisTemplate.opsForValue().get(key);
        //1.如果有效
        String yzm = "";
        if (yzmCode!=null){//验证码：时间戳
            Long oldSjc = Long.valueOf(yzmCode.toString().split(":")[1]);
            //1.1检查是否过了重发时间
            //   如果过了报错。如果没有过就只有使用这个验证码
            if (System.currentTimeMillis()-oldSjc<=1*60*1000){
                throw new BusinessException("不要乱搞，我们都知道");
            }
            yzm=yzmCode.toString().split(":")[0];
        }else {
            //2.如果拿不到，说明验证码已经失效或者第一次注册
            //这时直接生成一个新的验证码
            yzm = StrUtils.getComplexRandomString(4);
        }
        //三.保存新的验证码并且设置过期时间
        String newYzmCode = yzm + ":" + System.currentTimeMillis();
        redisTemplate.opsForValue().set(
                key, //这是上面的key值
                newYzmCode ,//验证码加上时间戳
                3, //三分钟有效
                TimeUnit.MINUTES ); //分钟

        //四.调用发短信的工具包给客户发送
        SmsUtils.sendSms(phone,"您在我们扫黄平台注册账号的验证码是:"+yzm+",请在有效期三分钟内使用" );
    }
}*/
